Package org.netbeans.modules.languages.pl_sql.editor

Source Code of org.netbeans.modules.languages.pl_sql.editor.OConnectionJPanel$TestConnection

/*
* OConnectionJPanel.java
*
* Created on 4. Juni 2008, 17:32
*/
package org.netbeans.modules.languages.pl_sql.editor;

import org.netbeans.modules.languages.pl_sql.editor.oracletree.*;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dialog;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import oracle.jdbc.OracleConnection;
import org.netbeans.api.progress.ProgressHandle;
import org.netbeans.api.progress.ProgressHandleFactory;
import org.openide.DialogDescriptor;
import org.openide.DialogDisplayer;
import org.openide.util.HelpCtx;
import org.openide.util.NbBundle;
import org.openide.util.RequestProcessor;
import org.openide.util.Task;
import org.openide.util.TaskListener;

/**
*
* @author  SUMsoft
*/
public class OConnectionJPanel extends javax.swing.JPanel implements HelpCtx.Provider {
;
    private final static String helpCtx = "org.netbeans.modules.languages.pl_sql.editor.connect";

    /** Creates new form OConnectionJPanel */
    public OConnectionJPanel() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        ServerNamejLabel = new javax.swing.JLabel();
        ServerNamejTextField = new javax.swing.JTextField();
        PortjLabel = new javax.swing.JLabel();
        PortjTextField = new javax.swing.JTextField();
        DatabseNamejTextField = new javax.swing.JTextField();
        UserjPanel = new javax.swing.JPanel();
        UserNamejLabel = new javax.swing.JLabel();
        UserNamejTextField = new javax.swing.JTextField();
        SavePasswordjCheckBox = new javax.swing.JCheckBox();
        PasswordjLabel = new javax.swing.JLabel();
        PasswordjPasswordField = new javax.swing.JPasswordField();
        ConnectAsjLabel = new javax.swing.JLabel();
        ConnectAsjComboBox = new javax.swing.JComboBox();
        connectProgressPanel = new javax.swing.JPanel();
        progressMessageLabel = new javax.swing.JLabel();
        progressContainerPanel = new javax.swing.JPanel();
        DBTypejComboBox = new javax.swing.JComboBox();

        ServerNamejLabel.setText(org.openide.util.NbBundle.getMessage(OConnectionJPanel.class, "OConnectionJPanel.ServerNamejLabel.text")); // NOI18N

        PortjLabel.setText(org.openide.util.NbBundle.getMessage(OConnectionJPanel.class, "OConnectionJPanel.PortjLabel.text")); // NOI18N

        PortjTextField.setText(org.openide.util.NbBundle.getMessage(OConnectionJPanel.class, "OConnectionJPanel.PortjTextField.text")); // NOI18N

        UserjPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(OConnectionJPanel.class, "OConnectionJPanel.UserjPanel.border.title"))); // NOI18N

        UserNamejLabel.setText(org.openide.util.NbBundle.getMessage(OConnectionJPanel.class, "OConnectionJPanel.UserNamejLabel.text")); // NOI18N

        SavePasswordjCheckBox.setText(org.openide.util.NbBundle.getMessage(OConnectionJPanel.class, "OConnectionJPanel.SavePasswordjCheckBox.text")); // NOI18N

        PasswordjLabel.setText(org.openide.util.NbBundle.getMessage(OConnectionJPanel.class, "OConnectionJPanel.PasswordjLabel.text")); // NOI18N

        ConnectAsjLabel.setText(org.openide.util.NbBundle.getMessage(OConnectionJPanel.class, "OConnectionJPanel.ConnectAsjLabel.text")); // NOI18N

        ConnectAsjComboBox.setModel(new javax.swing.DefaultComboBoxModel( RoleTypes.values()));


        javax.swing.GroupLayout UserjPanelLayout = new javax.swing.GroupLayout(UserjPanel);
        UserjPanel.setLayout(UserjPanelLayout);
        UserjPanelLayout.setHorizontalGroup(
            UserjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, UserjPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(UserjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(UserjPanelLayout.createSequentialGroup()
                        .addGroup(UserjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(UserNamejLabel)
                            .addComponent(ConnectAsjLabel))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(UserjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(SavePasswordjCheckBox)
                            .addComponent(ConnectAsjComboBox, javax.swing.GroupLayout.Alignment.LEADING, 0, 202, Short.MAX_VALUE)
                            .addComponent(UserNamejTextField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 202, Short.MAX_VALUE)))
                    .addGroup(UserjPanelLayout.createSequentialGroup()
                        .addComponent(PasswordjLabel)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(PasswordjPasswordField, javax.swing.GroupLayout.DEFAULT_SIZE, 204, Short.MAX_VALUE)))
                .addContainerGap())
        );
        UserjPanelLayout.setVerticalGroup(
            UserjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(UserjPanelLayout.createSequentialGroup()
                .addGroup(UserjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(UserNamejLabel)
                    .addComponent(UserNamejTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(SavePasswordjCheckBox)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(UserjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(PasswordjLabel)
                    .addComponent(PasswordjPasswordField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(UserjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(ConnectAsjLabel)
                    .addComponent(ConnectAsjComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        connectProgressPanel.setLayout(new java.awt.BorderLayout(0, 4));

        progressMessageLabel.setText(org.openide.util.NbBundle.getMessage(OConnectionJPanel.class, "OConnectionJPanel.progressMessageLabel.text")); // NOI18N       
        connectProgressPanel.add(progressMessageLabel, java.awt.BorderLayout.NORTH);

        progressContainerPanel.setMinimumSize(new java.awt.Dimension(20, 20));
        progressContainerPanel.setPreferredSize(new java.awt.Dimension(20, 20));
        progressContainerPanel.setLayout(new java.awt.BorderLayout());
        connectProgressPanel.add(progressContainerPanel, java.awt.BorderLayout.CENTER);

        DBTypejComboBox.setModel(new javax.swing.DefaultComboBoxModel( ConnectionTypes.values()));

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(UserjPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(connectProgressPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 299, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(PortjLabel)
                            .addComponent(ServerNamejLabel)
                            .addComponent(DBTypejComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(6, 6, 6)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(ServerNamejTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 224, Short.MAX_VALUE)
                            .addComponent(PortjTextField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 224, Short.MAX_VALUE)
                            .addComponent(DatabseNamejTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 224, Short.MAX_VALUE))))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(ServerNamejLabel)
                    .addComponent(ServerNamejTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(PortjLabel)
                    .addComponent(PortjTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(DatabseNamejTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(DBTypejComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(UserjPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(connectProgressPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
  }// </editor-fold>//GEN-END:initComponents

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JComboBox ConnectAsjComboBox;
    private javax.swing.JLabel ConnectAsjLabel;
    private javax.swing.JComboBox DBTypejComboBox;
    private javax.swing.JTextField DatabseNamejTextField;
    private javax.swing.JLabel PasswordjLabel;
    private javax.swing.JPasswordField PasswordjPasswordField;
    private javax.swing.JLabel PortjLabel;
    private javax.swing.JTextField PortjTextField;
    private javax.swing.JCheckBox SavePasswordjCheckBox;
    private javax.swing.JLabel ServerNamejLabel;
    private javax.swing.JTextField ServerNamejTextField;
    private javax.swing.JLabel UserNamejLabel;
    private javax.swing.JTextField UserNamejTextField;
    private javax.swing.JPanel UserjPanel;
    private javax.swing.JPanel connectProgressPanel;
    private javax.swing.JPanel progressContainerPanel;
    private javax.swing.JLabel progressMessageLabel;
    // End of variables declaration//GEN-END:variables
    private Dialog dlg;
    private TestConnection tc = null;
    private boolean isSaved = false;
    private final String[] str = {Utils.getBundle().getString("LBL_Test"),
        Utils.getBundle().getString("LBL_Save"),
        Utils.getBundle().getString("LBL_Cancel")/*,
    Utils.getBundle().getString("LBL_Help")*/

    };
    private String OConnPrefNode = null;

    public void setPassword(String str) {
        this.PasswordjPasswordField.setText(str);
    }

    public void setSavePassword(Boolean b) {
        this.SavePasswordjCheckBox.setSelected(b);
    }

    public void setUserName(String str) {
        this.UserNamejTextField.setText(str);
    }

    public void setConnectAs(RoleTypes rt) {
        this.ConnectAsjComboBox.setSelectedItem(rt);
    }

    public void setDatabseName(String str) {
        this.DatabseNamejTextField.setText(str);
    }

    public void setPort(int i) {
        this.PortjTextField.setText(String.valueOf(i));
    }

    public void setServerName(String str) {
        this.ServerNamejTextField.setText(str);
    }

    public String getServerName() {
        return ServerNamejTextField.getText();
    }

    public ConnectionTypes getConnectionType() {
        return (ConnectionTypes) DBTypejComboBox.getSelectedItem();
    }

    public void setConnectionType(ConnectionTypes ctype) {
        DBTypejComboBox.setSelectedItem(ctype);
    }

    public int getPort() {
        return Integer.parseInt(PortjTextField.getText());
    }

    public String getDatabaseName() {
        return DatabseNamejTextField.getText();
    }

    public String getUserName() {
        return UserNamejTextField.getText();
    }

    public Boolean getSaveUserPassword() {
        return SavePasswordjCheckBox.isSelected();
    }

    public String getPassword() {
        return String.copyValueOf(PasswordjPasswordField.getPassword());
    }

    public RoleTypes getConnectRole() {
        return (RoleTypes) ConnectAsjComboBox.getSelectedItem();
    }

    public Boolean Validate() {
        if (getServerName().length() == 0) {
            JOptionPane.showMessageDialog(this, Utils.getBundle().getString("LBL_ServerNameReq"),
                    Utils.getBundle().getString("LBL_InputError"), JOptionPane.ERROR_MESSAGE);
            return false;
        }
        try {
            int i = getPort();
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(this, Utils.getBundle().getString("LBL_PortReq"),
                    Utils.getBundle().getString("LBL_InputError"), JOptionPane.ERROR_MESSAGE);
            return false;
        }
        if (getDatabaseName().length() == 0) {
            JOptionPane.showMessageDialog(this, Utils.getBundle().getString("LBL_DBNameReq"),
                    Utils.getBundle().getString("LBL_InputError"), JOptionPane.ERROR_MESSAGE);
            return false;
        }
        if (getUserName().length() == 0) {
            JOptionPane.showMessageDialog(this, Utils.getBundle().getString("LBL_UserNameReq"),
                    Utils.getBundle().getString("LBL_InputError"), JOptionPane.ERROR_MESSAGE);
            return false;
        }
        if (getSaveUserPassword() && getPassword().length() == 0) {
            JOptionPane.showMessageDialog(this, Utils.getBundle().getString("LBL_PassReq"),
                    Utils.getBundle().getString("LBL_InputError"), JOptionPane.ERROR_MESSAGE);
            return false;
        }

        return true;
    }
    ActionListener listener = new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            if (e.getActionCommand().compareTo(Utils.getBundle().getString("LBL_Cancel")) == 0) {
                dlg.setVisible(false);
            }
            if (e.getActionCommand().compareTo(Utils.getBundle().getString("LBL_Save")) == 0) {
                if (Validate()) {
                    OConnectionClass ocs = new OConnectionClass(OConnPrefNode, getServerName(), getPort(), getDatabaseName(), getConnectionType().toString(),
                            getUserName(), getPassword(), getSaveUserPassword(), getConnectRole());
                    ocs.SaveConnection();
                    ocs.SaveAllUsers();
                    isSaved = true;
                    dlg.setVisible(false);
                }
            }
            if (e.getActionCommand().compareTo(Utils.getBundle().getString("LBL_Test")) == 0) {
                //JOptionPane.showMessageDialog(null, "Object is " + dlg.getFocusOwner().getClass().getName());
                if (tc == null) {
                    if (Validate()) {
                        if (getPassword().length() == 0) {
                            JOptionPane.showMessageDialog(dlg, Utils.getBundle().getString("LBL_PassReq"),
                                    Utils.getBundle().getString("LBL_InputError"), JOptionPane.ERROR_MESSAGE);
                            return;
                        }
                        OConnectionClass ocs = new OConnectionClass(null, getServerName(), getPort(), getDatabaseName(), getConnectionType().toString(),
                                getUserName(), getPassword(), true, getConnectRole());

                        tc = new TestConnection(ocs);
                        tc.post();
                        testbtn = (javax.swing.JButton) dlg.getFocusOwner();
                        ChangeTestButton();
                    }
                }
            }
            if (e.getActionCommand().compareTo(Utils.getBundle().getString("LBL_Stop")) == 0) {
                tc.stop();
                testbtn = (javax.swing.JButton) dlg.getFocusOwner();
                ChangeTestButton();
            }
        /*if (e.getActionCommand().compareTo(Utils.getBundle().getString("LBL_Help")) == 0) {
        Help help = (Help) Lookup.getDefault().lookup(Help.class);
        if (help != null && help.isValidID(helpCtx, true).booleanValue()) {
        help.showHelp(new HelpCtx(helpCtx));
        } else {
        Toolkit.getDefaultToolkit().beep();
        }
        }*/
        }
    };
    private ProgressHandle progressHandle;
    private JComponent progressComponent;
    private JButton testbtn;

    private void ChangeTestButton() {
        if (testbtn != null) {
            if (testbtn.getText().compareTo(Utils.getBundle().getString("LBL_Test")) == 0) {
                testbtn.setText(Utils.getBundle().getString("LBL_Stop"));
                return;
            }
            if (testbtn.getText().compareTo(Utils.getBundle().getString("LBL_Stop")) == 0) {
                testbtn.setText(Utils.getBundle().getString("LBL_Test"));
            }
        }
    }

    private void startProgress(final String msg) {
        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                progressHandle = ProgressHandleFactory.createHandle(null);/*, new Cancellable () {
               
                public boolean cancel() {
                throw new UnsupportedOperationException("Not supported yet.");
                }
               
                });*/
                progressComponent = ProgressHandleFactory.createProgressComponent(progressHandle);
                progressContainerPanel.add(progressComponent, BorderLayout.CENTER);
                //JLabel progressMessage = ProgressHandleFactory.createDetailLabelComponent(progressHandle);
                progressHandle.start();
                //dlg.validate();
                progressMessageLabel.setForeground(Color.BLACK);
                progressMessageLabel.setText(msg);
            }
        });
    }

    private void stopProgress(final String msg, final boolean connected) {
        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                progressHandle.finish();
                progressContainerPanel.remove(progressComponent);
                // without this, the removed progress component remains painted on its parent... why?
                progressContainerPanel.repaint();
                if (connected) {
                    progressMessageLabel.setForeground(Color.BLACK);
                } else {
                    progressMessageLabel.setForeground(Color.RED);
                }
                progressMessageLabel.setText(msg);
            //dlg.pack();
            //dlg.validate();
            }
        });
    }

    private void ShowDialogInternal(String caption) {
        //OConnectionJPanel oc = new OConnectionJPanel();
        DialogDescriptor d = new DialogDescriptor(this, caption, true, str, null, DialogDescriptor.BOTTOM_ALIGN, HelpCtx.findHelp(this), listener);
        //d.setModal(true);
        //d.setMessageType(NotifyDescriptor.PLAIN_MESSAGE);
        //d.setOptionType(NotifyDescriptor.DEFAULT_OPTION);
        dlg = DialogDisplayer.getDefault().createDialog(d);
        dlg.pack();
        //dlg.setSize(new Dimension(800, 600));
        dlg.setVisible(true);
    }

    public void ShowEmptyDialog() {
        ShowDialogInternal(Utils.getBundle().getString("LBL_AddConn"));
    }

    private void DisableDBControls() {
        this.DatabseNamejTextField.setEnabled(false);
        this.PortjTextField.setEnabled(false);
        this.ServerNamejTextField.setEnabled(false);
        this.DBTypejComboBox.setEnabled(false);
        UserNamejTextField.transferFocus();
    }

    public void ShowDialog(OConnectionClass ocs) {
        if (ocs != null) {
            OConnPrefNode = ocs.getPrefNode();
            setServerName(ocs.getServerName());
            setPort(ocs.getPort());
            setDatabseName(ocs.getDatabaseName());
            DisableDBControls();
            ShowDialogInternal(Utils.getBundle().getString("LBL_AddUser"));
        }
    }

    public void ShowEditConnDialog(OConnectionClass ocs) {
        if (ocs != null) {
            OConnPrefNode = ocs.getPrefNode();
            setServerName(ocs.getServerName());
            setPort(ocs.getPort());
            setDatabseName(ocs.getDatabaseName());
            setConnectionType(ocs.getConnectionType());
            if (ocs.getUsers().size() > 0) {
                setUserName(ocs.getUsers().first().getUserName());
                setSavePassword(ocs.getUsers().first().getSavePassword());
                setPassword(ocs.getUsers().first().getPassword());
                setConnectAs(ocs.getUsers().first().getConnectRole());
            }
            ShowDialogInternal(Utils.getBundle().getString("LBL_EditConn"));
        }
    }

    public void ShowEditUserDialog(OUser ocs) {
        if (ocs != null) {
            OConnPrefNode = ocs.getParent().getPrefNode();
            setServerName(ocs.getParent().getServerName());
            setPort(ocs.getParent().getPort());
            setDatabseName(ocs.getParent().getDatabaseName());
            setConnectionType(ocs.getParent().getConnectionType());
            setUserName(ocs.getUserName());
            setSavePassword(ocs.getSavePassword());
            setPassword(ocs.getPassword());
            setConnectAs(ocs.getConnectRole());
            DisableDBControls();
            ShowDialogInternal(Utils.getBundle().getString("LBL_EditUser"));
        }
    }

    public boolean getIsSaved() {
        return isSaved;
    }

    class TestConnection {

        private OConnectionClass ocs;
        private RequestProcessor rp;
        private RequestProcessor.Task task;
        private String msg;
        private boolean connected = false;
        private OracleConnection oc = null;
        private boolean interrupted = false;

        public TestConnection(final OConnectionClass ocs) {
            this.ocs = ocs;
            rp = new RequestProcessor(TestConnection.class.getName(), 1, true);

            task = rp.create(new Runnable() {

                public void run() {
                    try {
                        startProgress(NbBundle.getMessage(Utils.getCommonClass(), "LBL_ConnectingTo", ocs.toString()));
                        oc = (OracleConnection) ocs.getUsers().first().getOracleDataSource().getConnection();
                        msg = NbBundle.getMessage(Utils.getCommonClass(), "LBL_ConnectedTo", ocs.toString());
                        connected = true;
                    } catch (SQLException ex) {
                        msg = ex.getMessage();
                    } finally {
                        if (oc != null) {
                            try {
                                oc.close();
                            } catch (SQLException ex) {
                                msg = ex.getMessage();
                            }
                        }
                    }
                }
            });
            task.addTaskListener(
                    new TaskListener() {

                        public void taskFinished(Task arg0) {
                            if (!interrupted) {
                                stopProgress(msg, connected);
                                ChangeTestButton();
                                tc = null;
                            }
                        }
                    });

        }

        public void post() {
            rp.post(task);
        }

        public void stop() {
            task.cancel();
            interrupted = true;
            stopProgress(Utils.getBundle().getString("LBL_Canceled"), false);
            tc = null;
        }
    }

    public HelpCtx getHelpCtx() {
        return new HelpCtx(this.helpCtx);
    }
}
TOP

Related Classes of org.netbeans.modules.languages.pl_sql.editor.OConnectionJPanel$TestConnection

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.